<?php
class Comentario extends Doctrine_Record {
    public function setTableDefinition() {
        $this->setTableName('comentario');
        $this->hasColumn('contenido','string',255);
        $this->hasColumn('fecha','date');
        $this->hasColumn('id_owner','integer');
        $this->hasColumn('id_respuesta','integer');
        $this->hasColumn('id_estado','integer');
        $this->hasColumn('id_tipo','integer');
        $this->hasColumn('idObjetoComentado','integer');
    }

    public function setUp(){
        $this->hasOne('Usuario as owner',array(
            'local'=>'id_owner',
            'foreign'=>'id'
        ));
        $this->hasOne('Estado as estado',array(
            'local'=>'id_estado',
            'foreign'=>'id'
        ));
         $this->hasOne('TipoComentario as tipo',array(
            'local'=>'id_tipo',
            'foreign'=>'id'
        ));
        $this->hasOne('Comentario as respueta',array(
            'local'=>'id_respuesta',
            'foreign'=>'id'
        ));
    }

    //INCIO DE GETERS Y SETERS
    public function getContenido () {
        return utf8_decode($this->_get('contenido'));
    }
    public function setContenido ($contenido) {
        $this->_set('contenido', utf8_encode($contenido));
    }

    public function getFecha () {
        $fechaArray = explode('-', $this->_get('fecha'));
        $fechaArray = array_reverse($fechaArray);
        return implode('-', $fechaArray);
    }
    public function setFecha ($fecha) {
        $fechaArray = explode('-', $fecha);
        $fechaArray = array_reverse($fechaArray);
        $this->_set('fecha', implode('-', $fechaArray));
    }
    
    //simulacion de objetos
    public function getMarker () {
        return Doctrine::getTable('marker')->find($this->_get('idObjetoComentado'));
    }
    public function setMaker ($marker) {
        $this->set('idObjetoComentado', $marker->id);
    }
    
    public function getImagen () {
        return Doctrine::getTable('imagen')->find($this->_get('idObjetoComentado'));
    }
    public function setImagen ($imagen) {
        $this->set('idObjetoComentado', $imagen->id);
    }
    
    public function getPregunta () {
        return Doctrine::getTable('publicacion')->find($this->_get('idObjetoComentado'));
    }
    public function setPregunta ($publicacion) {
        $this->set('idObjetoComentado', $publicacion->id);
    }
    
    public function getRespuesta () {
        return Doctrine::getTable('publicacion')->find($this->_get('idObjetoComentado'));
    }
    public function setRespuesta ($publicacion) {
        $this->set('idObjetoComentado', $publicacion->id);
    }
    //FIN SETERS Y GETERS
}

/*
 * COMO FUNCIONA
 * Es un objeto generico que engloba: comentarios a markers, a fotos, preguntas y respuestas de publicaciones
 * Tiene un tipo de comentario para saber a cual de sus presentaciones hace referencia
 * La respuesta solo aplica para el comentario de tipo pregunta en publiacion
 * Este objeto funciona unido a TipoComentario, para entender mejor ver los comenarios en
 * Denuncia y TipoDenuncia
 */
?>